package dataview;

public class InfoRicetta {
	private String presentazione;
	private String note;
	private int numeroPorzioni; //>= 1
	private UnitaPorzioni unitaPorzioni;
	private String custom;
	private Difficolta difficolta;
	
	public InfoRicetta(String presentazione, String note, int numeroPorzioni, Difficolta difficolta, String custom) {
		if (numeroPorzioni < 1) throw new IllegalArgumentException("Il numero di porzioni deve essere >= 1");
		this.presentazione = presentazione;
		this.note = note;
		this.numeroPorzioni = numeroPorzioni;
		this.unitaPorzioni = UnitaPorzioni.altro;
		this.difficolta = difficolta;
		this.custom = custom;
	}
	
	public InfoRicetta(String presentazione, String note, int numeroPorzioni, UnitaPorzioni unitaPorzioni, Difficolta difficolta) {
		if (numeroPorzioni < 1) throw new IllegalArgumentException("Il numero di porzioni deve essere >= 1");
		this.presentazione = presentazione;
		this.note = note;
		this.numeroPorzioni = numeroPorzioni;
		this.unitaPorzioni = unitaPorzioni;
		this.difficolta = difficolta;
		this.custom = null;
	}

	public String getCustom () {
		return custom;
	}
	
	public String getPresentazione() {
		return presentazione;
	}
	
	public String getNote() {
		return note;
	}
	
	public int getNumeroPorzioni() {
		return numeroPorzioni;
	}
	
	public UnitaPorzioni getUnitaPorzioni() {
		return unitaPorzioni;
	}
	
	public Difficolta getDifficolta() {
		return difficolta;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((difficolta == null) ? 0 : difficolta.hashCode());
		result = prime * result + ((note == null) ? 0 : note.hashCode());
		result = prime * result + numeroPorzioni;
		result = prime * result + ((presentazione == null) ? 0 : presentazione.hashCode());
		result = prime * result + ((unitaPorzioni == null) ? 0 : unitaPorzioni.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj) return true;
		if (obj == null) return false;
		if (getClass() != obj.getClass()) return false;
		InfoRicetta other = (InfoRicetta)obj;
		if (difficolta == null) {
			if (other.difficolta != null) return false;
		} else if (!difficolta.equals(other.difficolta)) return false;
		if (note == null) {
			if (other.note != null) return false;
		} else if (!note.equals(other.note)) return false;
		if (numeroPorzioni != other.numeroPorzioni) return false;
		if (presentazione == null) {
			if (other.presentazione != null) return false;
		} else if (!presentazione.equals(other.presentazione)) return false;
		if (unitaPorzioni == null) {
			if (other.unitaPorzioni != null) return false;
		} else if (!unitaPorzioni.equals(other.unitaPorzioni)) return false;
		return true;
	}
}
